<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  

  
  <title>jvm命令 | 雁过留声</title>
  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
  <meta name="description" content="jstat -gcutil pid 线上问题排查https:&#x2F;&#x2F;www.jianshu.com&#x2F;p&#x2F;3e54b224a122 jvm 垃圾回收算法https:&#x2F;&#x2F;www.jianshu.com&#x2F;p&#x2F;23f8249886c6 1）复制算法2）标记清除算法3）标记整理算法4）分代收集算法5）引用计数算法 新生代收集器：Serial(复制算法)、ParNew(Serial 多线程版本)、Parallel">
<meta property="og:type" content="article">
<meta property="og:title" content="jvm命令">
<meta property="og:url" content="http://yanglf007.gitee.io/blog/2020/08/11/jvm%E5%91%BD%E4%BB%A4/index.html">
<meta property="og:site_name" content="雁过留声">
<meta property="og:description" content="jstat -gcutil pid 线上问题排查https:&#x2F;&#x2F;www.jianshu.com&#x2F;p&#x2F;3e54b224a122 jvm 垃圾回收算法https:&#x2F;&#x2F;www.jianshu.com&#x2F;p&#x2F;23f8249886c6 1）复制算法2）标记清除算法3）标记整理算法4）分代收集算法5）引用计数算法 新生代收集器：Serial(复制算法)、ParNew(Serial 多线程版本)、Parallel">
<meta property="og:locale" content="en_US">
<meta property="og:image" content="http://chuantu.xyz/t6/740/1596545223x-1922733148.png">
<meta property="og:image" content="http://chuantu.xyz/t6/740/1596548374x1031866013.jpg">
<meta property="article:published_time" content="2020-08-11T12:30:16.418Z">
<meta property="article:modified_time" content="2020-09-24T16:41:06.444Z">
<meta property="article:author" content="yanglf007">
<meta name="twitter:card" content="summary">
<meta name="twitter:image" content="http://chuantu.xyz/t6/740/1596545223x-1922733148.png">
  
    <link rel="alternate" href="/blog/atom.xml" title="雁过留声" type="application/atom+xml">
  
  
    <link rel="icon" href="/favicon.png">
  
  
    <link href="//fonts.googleapis.com/css?family=Source+Code+Pro" rel="stylesheet" type="text/css">
  
  
<link rel="stylesheet" href="/blog/css/style.css">

<meta name="generator" content="Hexo 4.2.0"></head>

<body>
  <div id="container">
    <div id="wrap">
      <header id="header">
  <div id="banner"></div>
  <div id="header-outer" class="outer">
    <div id="header-title" class="inner">
      <h1 id="logo-wrap">
        <a href="/blog/" id="logo">雁过留声</a>
      </h1>
      
    </div>
    <div id="header-inner" class="inner">
      <nav id="main-nav">
        <a id="main-nav-toggle" class="nav-icon"></a>
        
          <a class="main-nav-link" href="/blog/">Home</a>
        
          <a class="main-nav-link" href="/blog/archives">Archives</a>
        
      </nav>
      <nav id="sub-nav">
        
          <a id="nav-rss-link" class="nav-icon" href="/blog/atom.xml" title="RSS Feed"></a>
        
        <a id="nav-search-btn" class="nav-icon" title="Search"></a>
      </nav>
      <div id="search-form-wrap">
        <form action="//google.com/search" method="get" accept-charset="UTF-8" class="search-form"><input type="search" name="q" class="search-form-input" placeholder="Search"><button type="submit" class="search-form-submit">&#xF002;</button><input type="hidden" name="sitesearch" value="http://yanglf007.gitee.io/blog"></form>
      </div>
    </div>
  </div>
</header>
      <div class="outer">
        <section id="main"><article id="post-jvm命令" class="article article-type-post" itemscope itemprop="blogPost">
  <div class="article-meta">
    <a href="/blog/2020/08/11/jvm%E5%91%BD%E4%BB%A4/" class="article-date">
  <time datetime="2020-08-11T12:30:16.418Z" itemprop="datePublished">2020-08-11</time>
</a>
    
  </div>
  <div class="article-inner">
    
    
      <header class="article-header">
        
  
    <h1 class="article-title" itemprop="name">
      jvm命令
    </h1>
  

      </header>
    
    <div class="article-entry" itemprop="articleBody">
      
        <p>jstat -gcutil pid</p>
<p>线上问题排查<br><a href="https://www.jianshu.com/p/3e54b224a122" target="_blank" rel="noopener">https://www.jianshu.com/p/3e54b224a122</a></p>
<p>jvm 垃圾回收算法<br><a href="https://www.jianshu.com/p/23f8249886c6" target="_blank" rel="noopener">https://www.jianshu.com/p/23f8249886c6</a></p>
<p>1）复制算法<br>2）标记清除算法<br>3）标记整理算法<br>4）分代收集算法<br>5）引用计数算法</p>
<p>新生代收集器：Serial(复制算法)、ParNew(Serial 多线程版本)、Parallel (复制算法多线程版本,关注吞吐量)</p>
<p>老年代收集器：CMS、Serial Old、Parallel Old<br>CMS 初始标记 , 并发标记, 重新标记,并发清除,并发重置<br>STW stop the world 全局暂停现象，全局停顿，所有Java代码停止</p>
<p>整堆收集器： G1 并行与并发的标记-复制垃圾回收器 gradge first 优先级</p>
<h3 id="jvm"><a href="#jvm" class="headerlink" title="jvm"></a>jvm</h3><ol>
<li><p>新生代分几个区，使用什么算法进行回收，为什么使用这个算法</p>
</li>
<li><p>讲一讲垃圾回收器（重点cms、g1），垃圾回收算法<br>cms 使用标记清楚算法，目的是获取最短的停顿时间，提高用户体验<br>初始标记（GC root 直接关联的对象）<br>并发标记（进行GC root跟踪，不暂停）<br>重新标记（暂停，修正并发标记的错误）<br>并发清除</p>
</li>
</ol>
<p>G1 垃圾回收器<br>可以非常精确的控制停顿时间<br>主要针对配备多颗处理器及大容量内存的机器. 以极高概率满足GC停顿时间要求的同时,还具备高吞吐量性能特征,<br>整体采用“标记—整理”算法，局部（region之间）采用“复制”算法<br>把堆内存分成几个区，跟踪几个区的垃圾回收进度，并且根据允许收集的时间，设置一个优先级列表，优先回收垃圾最多的区域</p>
<ol start="3">
<li><p>如何定位线上的cpu和内存问题（实际操作下）</p>
</li>
<li><p>内存溢出（OOM）和 内存泄漏(memery Leak)-内存没有被回收</p>
</li>
<li><p>JVM 自动内存管理, minorGC 和 Full GC 触发机制<br>Eden内存不够时触发minorGC,对新生代进行垃圾回收，采用复制算法，复制-清空-互换<br>major GC之前一般都进行minor GC，导致新生代对象晋级到老年代，内存不够触发major GC ;major GC采用标记清除算法</p>
</li>
<li><p>JVM调优，基本思路是什么</p>
</li>
<li><p>valatile 关键字如何保证内存可见性和有序性</p>
</li>
</ol>
<ol start="8">
<li><p>jvm中一次完整的GC流程（从ygc到fgc）是怎样的，重点讲讲对象如何晋升到老年代等<br>大对象（需要大量连续内存空间）直接进入老年态；长期存活的对象进入老年态。如果对象在新生代出生并经过第一次MGC后仍然存活，年龄+1，若年龄超过一定限制（15），则被晋升到老年态。</p>
</li>
<li><p>jvm模型</p>
</li>
</ol>
<p><img src="http://chuantu.xyz/t6/740/1596545223x-1922733148.png" alt="avatar"></p>
<p>公共内存 ： 堆，方法区<br>私有：      本地方法栈  程序计数器 虚拟机栈</p>
<p>jvm内存划分<br><img src="http://chuantu.xyz/t6/740/1596548374x1031866013.jpg" alt="avatar"></p>
<p>程序计数器：是当前线程执行字节码行号的指示器，多线程中，线程可能挂起，需要重新找到执行代码的地方,唯一一个无oom的区域<br>本地方法栈：与虚拟机栈相同，一个是存储java方法的相关信息，一个是本地方法<br>虚拟机栈：线程私有，生命周期与线程相同，用来存局部变量，方法出口，每个方法执行的同时会创建一个栈帧，线程结束销毁栈帧，方法执行时一个从入栈到出栈的过程<br>堆：存放在数组中的完全二叉树<br>方法区：保存的是每一个类的信息，保存类的元数据 是Perm Gen（永久代），运行时常量池，1.8时叫元数据区，用的是本地内存</p>
<p>jmap -dump:format=b,file=jmap.dump pid 导出线程<br>可以用jvisualvm 分析,(通过文件-&gt;装入-&gt;选择堆dump)<br>top命令显示的是进程<br>top  -H -p pid 显示的是进程下面的线程</p>
<p>printf ‘%x\n’ pid 可以将10进制转换为</p>
<p>jstack pid | grep ‘nid’ -C10 –color<br>jstack -l 显示长列表 和锁信息<br>jstack -F 当线程挂起时,将堆栈中的信息打印出来</p>
<p>jstat -gc pid 可以查看gc情况</p>
<p>grep </p>
<p>–color    ###颜色着重显示命中的文件及文件件</p>
<p>-n  ###显示行号  number</p>
<p>-i   ###忽略大小写 ignore</p>
<p>-c  ###count统计出现匹配的次数</p>
<p>-E  ###标准posix，支持正则表达式   </p>
<p>grep -E   -v   ‘(^$|^#)’ xxxx   等价于egrep -v ‘(^$|^#)’  xxx<br>-A   n    ###after     前面多少行</p>
<p>-B   n   ###before    后面多少行</p>
<p>-C   n   ###centor    前后多少行</p>

      
    </div>
    <footer class="article-footer">
      <a data-url="http://yanglf007.gitee.io/blog/2020/08/11/jvm%E5%91%BD%E4%BB%A4/" data-id="ckgtnonmx000cm8ul1li83274" class="article-share-link">Share</a>
      
      
    </footer>
  </div>
  
    
<nav id="article-nav">
  
    <a href="/blog/2020/08/11/tddl%E9%9D%A2%E8%AF%95%E9%A2%98/" id="article-nav-newer" class="article-nav-link-wrap">
      <strong class="article-nav-caption">Newer</strong>
      <div class="article-nav-title">
        
          tddl面试题
        
      </div>
    </a>
  
  
    <a href="/blog/2020/08/10/1%E4%BB%8A%E6%97%A5%E5%B7%A5%E4%BD%9C/" id="article-nav-older" class="article-nav-link-wrap">
      <strong class="article-nav-caption">Older</strong>
      <div class="article-nav-title">1今日工作</div>
    </a>
  
</nav>

  
</article>

</section>
        
          <aside id="sidebar">
  
    

  
    

  
    
  
    
  <div class="widget-wrap">
    <h3 class="widget-title">Archives</h3>
    <div class="widget">
      <ul class="archive-list"><li class="archive-list-item"><a class="archive-list-link" href="/blog/archives/2020/10/">October 2020</a></li><li class="archive-list-item"><a class="archive-list-link" href="/blog/archives/2020/08/">August 2020</a></li><li class="archive-list-item"><a class="archive-list-link" href="/blog/archives/2020/07/">July 2020</a></li><li class="archive-list-item"><a class="archive-list-link" href="/blog/archives/2020/06/">June 2020</a></li><li class="archive-list-item"><a class="archive-list-link" href="/blog/archives/2020/05/">May 2020</a></li><li class="archive-list-item"><a class="archive-list-link" href="/blog/archives/2020/04/">April 2020</a></li></ul>
    </div>
  </div>


  
    
  <div class="widget-wrap">
    <h3 class="widget-title">Recent Posts</h3>
    <div class="widget">
      <ul>
        
          <li>
            <a href="/blog/2020/10/25/%E6%AF%8F%E6%97%A5%E5%AD%A6%E4%B9%A0/">每日学习</a>
          </li>
        
          <li>
            <a href="/blog/2020/10/12/mybatis-plus/">mybatis-plus</a>
          </li>
        
          <li>
            <a href="/blog/2020/08/30/%E7%A7%92%E6%9D%80%E7%B3%BB%E7%BB%9F/">秒杀系统</a>
          </li>
        
          <li>
            <a href="/blog/2020/08/29/elasticsearch%E7%9F%A5%E8%AF%86/">elasticsearch知识</a>
          </li>
        
          <li>
            <a href="/blog/2020/08/28/redis%E9%9D%A2%E8%AF%95/">redis面试</a>
          </li>
        
      </ul>
    </div>
  </div>

  
</aside>
        
      </div>
      <footer id="footer">
  
  <div class="outer">
    <div id="footer-info" class="inner">
      &copy; 2020 yanglf007<br>
      Powered by <a href="http://hexo.io/" target="_blank">Hexo</a>
    </div>
  </div>
</footer>
    </div>
    <nav id="mobile-nav">
  
    <a href="/blog/" class="mobile-nav-link">Home</a>
  
    <a href="/blog/archives" class="mobile-nav-link">Archives</a>
  
</nav>
    

<script src="//ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>


  
<link rel="stylesheet" href="/blog/fancybox/jquery.fancybox.css">

  
<script src="/blog/fancybox/jquery.fancybox.pack.js"></script>




<script src="/blog/js/script.js"></script>




  </div>
</body>
</html>